home *** CD-ROM | disk | FTP | other *** search
/ 100 Plus Great Games 2 / 100PLUSV2.BIN / games / EntertheTroy.dxr / 00010_Pickup Handlers.ls < prev    next >
Encoding:
Text File  |  2002-01-31  |  8.3 KB  |  210 lines

  1. global pickupSO, pickupData, playerViewpoint, playerLocData
  2.  
  3. on initializePickups
  4.   pickupData = []
  5.   repeat with wPickup = 1 to 16
  6.     wSprite = pickupSO + wPickup
  7.     add(pickupData, [0, 0, 0, point(0, 0), point(0, 0), 0])
  8.     puppetSprite(wSprite, 1)
  9.     set the ink of sprite wSprite to 36
  10.     sprite(wSprite).rotation = 0
  11.     set the loc of sprite wSprite to point(-50, -50)
  12.     sprite(wSprite).locZ = 198
  13.   end repeat
  14. end
  15.  
  16. on addPickup pickupType, pickupVariation, spawnPoint, rMomentum
  17.   validSlot = 0
  18.   repeat with wSlot = 1 to count(pickupData)
  19.     if (pickupData[wSlot][1] = 0) and (validSlot = 0) then
  20.       validSlot = wSlot
  21.     end if
  22.   end repeat
  23.   if validSlot <> 0 then
  24.     if rMomentum = VOID then
  25.       rMomentum = point(0, 0)
  26.     end if
  27.     wSprite = pickupSO + validSlot
  28.     pickupData[validSlot] = [1, pickupType, pickupVariation, spawnPoint, rMomentum, 400]
  29.     sprite(wSprite).visible = 1
  30.   end if
  31. end
  32.  
  33. on movePickups
  34.   global frameAnimate, playerInventory, playerHealth, frameSkip, updateTextFields
  35.   frameSkip = frameSkip + 1
  36.   if frameSkip > 2 then
  37.     frameSkip = 1
  38.   end if
  39.   if frameSkip = 1 then
  40.     frameAnimate = frameAnimate + 1
  41.   end if
  42.   pbPoint = playerLocData[3]
  43.   playerBodyRange = rect(pbPoint[1] - 25, pbPoint[2] - 50, pbPoint[1] + 25, pbPoint[2] + 50)
  44.   repeat with wPickup = 1 to count(pickupData)
  45.     wSprite = pickupSO + wPickup
  46.     if pickupData[wPickup][1] = 1 then
  47.       if (findDistance(pickupData[wPickup][4], pbPoint) < 50) and (playerLocData[1] = 1) then
  48.         set the loc of sprite wSprite to point(-50, -50)
  49.         pickupData[wPickup][1] = 0
  50.         pType = pickupData[wPickup][2]
  51.         case pickupData[wPickup][2] of
  52.           1:
  53.             playerInventory[1] = playerInventory[1] + [1, 5, 0][pickupData[wPickup][3]]
  54.             addScore([10, 50, 0][pickupData[wPickup][3]])
  55.             if pickupData[wPickup][3] = 3 then
  56.               if playerHealth < 3 then
  57.                 playerHealth = playerHealth + 1
  58.               else
  59.                 addScore(300)
  60.               end if
  61.               playSound("gain heart SFX", 1)
  62.             else
  63.               playSound("Get Smiley Face SFX", 1)
  64.             end if
  65.             updateCoinDisplay = 1
  66.           2:
  67.             playerInventory[2] = playerInventory[2] + 1
  68.             updateKeyDisplay = 1
  69.             addScore(50)
  70.             playSound("gain heart SFX", 1)
  71.         end case
  72.         next repeat
  73.       end if
  74.       pickupVar = pickupData[wPickup][3]
  75.       case pickupData[wPickup][2] of
  76.         1:
  77.           rpoint = point(random(40), random(40)) - 20
  78.           if random(2) = 1 then
  79.             addparticle(pickupData[wPickup][4] + rpoint, 0, 6)
  80.           end if
  81.           groundCheck = checkSolidpoint(pickupData[wPickup][4] + point(0, 18))
  82.           celingCheck = checkSolidpoint(pickupData[wPickup][4] - point(0, 18))
  83.           if groundCheck[1] = 1 then
  84.             if pickupVar = 3 then
  85.               pickupData[wPickup][5][2] = 0
  86.             else
  87.               pickupData[wPickup][5][2] = 0 - integer(abs(pickupData[wPickup][5][2]) * 3 / 4)
  88.             end if
  89.             if groundCheck[2] = 2 then
  90.               pickupData[wPickup][5] = pickupData[wPickup][5] + point(1, 0)
  91.             else
  92.               if groundCheck[2] = 3 then
  93.                 pickupData[wPickup][5] = pickupData[wPickup][5] - point(1, 0)
  94.               end if
  95.             end if
  96.           else
  97.             if celingCheck[1] = 1 then
  98.               pickupData[wPickup][5][2] = integer(abs(pickupData[wPickup][5][2]))
  99.             else
  100.               pickupData[wPickup][5][2] = pickupData[wPickup][5][2] + 1
  101.               if pickupData[wPickup][5][2] > 16 then
  102.                 pickupData[wPickup][5][2] = 16
  103.               end if
  104.             end if
  105.           end if
  106.           pickupData[wPickup][5][1] = 0
  107.           pickupData[wPickup][4] = pickupData[wPickup][4] + pickupData[wPickup][5]
  108.           pickupData[wPickup][6] = pickupData[wPickup][6] - 1
  109.           if pickupData[wPickup][6] > 150 then
  110.             memNum = (frameAnimate mod 8) + 1
  111.             if pickupVar = 3 then
  112.               set the member of sprite wSprite to "Shroom"
  113.             else
  114.               set the member of sprite wSprite to ["Silver Coin ", "Happy Coin ", "Shroom "][pickupVar] & string(memNum)
  115.             end if
  116.             set the loc of sprite wSprite to pickupData[wPickup][4] - playerViewpoint
  117.             pickupData[wPickup][6] = pickupData[wPickup][6] - 1
  118.           else
  119.             if pickupData[wPickup][6] > 0 then
  120.               if (pickupData[wPickup][6] mod 3) = 0 then
  121.                 sprite(wSprite).visible = 0
  122.               else
  123.                 sprite(wSprite).visible = 1
  124.               end if
  125.               memNum = (frameAnimate mod 8) + 1
  126.               if frameSkip = 1 then
  127.                 if pickupVar = 3 then
  128.                   set the member of sprite wSprite to "Shroom"
  129.                 else
  130.                   set the member of sprite wSprite to ["Silver Coin ", "Happy Coin ", "Shroom "][pickupVar] & string(memNum)
  131.                 end if
  132.               end if
  133.               set the loc of sprite wSprite to pickupData[wPickup][4] - playerViewpoint
  134.               pickupData[wPickup][6] = pickupData[wPickup][6] - 1
  135.             else
  136.               set the loc of sprite wSprite to point(-50, -50)
  137.               sprite(wSprite).visible = 1
  138.               pickupData[wPickup][1] = 0
  139.             end if
  140.           end if
  141.         2:
  142.           set the member of sprite wSprite to ["Level Key"][pickupVar]
  143.           set the loc of sprite wSprite to pickupData[wPickup][4] - playerViewpoint
  144.         3:
  145.           groundCheck = checkSolidpoint(pickupData[wPickup][4] + point(0, 6))
  146.           celingCheck = checkSolidpoint(pickupData[wPickup][4] - point(0, 12))
  147.           if groundCheck[1] = 1 then
  148.             pickupData[wPickup][5][2] = 0 - integer(abs(pickupData[wPickup][5][2]) * 5 / 6)
  149.             if groundCheck[2] = 2 then
  150.               pickupData[wPickup][5] = pickupData[wPickup][5] + point(1, 0)
  151.             else
  152.               if groundCheck[2] = 3 then
  153.                 pickupData[wPickup][5] = pickupData[wPickup][5] - point(1, 0)
  154.               end if
  155.             end if
  156.           else
  157.             if celingCheck[1] = 1 then
  158.               pickupData[wPickup][5][2] = integer(abs(pickupData[wPickup][5][2]))
  159.             else
  160.               pickupData[wPickup][5][2] = pickupData[wPickup][5][2] + 1
  161.               if pickupData[wPickup][5][2] > 18 then
  162.                 pickupData[wPickup][5][2] = 18
  163.               end if
  164.             end if
  165.           end if
  166.           if checkSolidpoint(pickupData[wPickup][4] + point(12, 0))[1] = 1 then
  167.             pickupData[wPickup][5][1] = 0 - abs(pickupData[wPickup][5][1])
  168.           else
  169.             if checkSolidpoint(pickupData[wPickup][4] - point(12, 0))[1] = 1 then
  170.               pickupData[wPickup][5][1] = abs(pickupData[wPickup][5][1])
  171.             end if
  172.           end if
  173.           if groundCheck[2] = 11 then
  174.             if pickupData[wPickup][5][1] > 5 then
  175.               pickupData[wPickup][5][1] = pickupData[wPickup][5][1] - 1
  176.             else
  177.               if pickupData[wPickup][5][1] < -5 then
  178.                 pickupData[wPickup][5][1] = pickupData[wPickup][5][1] + 1
  179.               end if
  180.             end if
  181.             if pickupData[wPickup][5][2] > 3 then
  182.               pickupData[wPickup][5][2] = pickupData[wPickup][5][2] - 1
  183.             else
  184.               if pickupData[wPickup][5][2] < -3 then
  185.                 pickupData[wPickup][5][2] = pickupData[wPickup][5][2] + 1
  186.               end if
  187.             end if
  188.             pickupData[wPickup][5][2] = pickupData[wPickup][5][2] - 1
  189.           end if
  190.           pickupData[wPickup][4] = pickupData[wPickup][4] + pickupData[wPickup][5]
  191.           pickupData[wPickup][6] = pickupData[wPickup][6] - 1
  192.           bSpinType = [-3, -6, -9, 3, 6, 9][(wPickup mod 6) + 1]
  193.           coreSpins = abs(500 - pickupData[wPickup][6]) * bSpinType
  194.           set the member of sprite wSprite to ["Bone A", "Bone B", "Bone C", "Bone D", "Skull"][pickupVar]
  195.           sprite(wSprite).rotation = coreSpins
  196.           set the loc of sprite wSprite to pickupData[wPickup][4] - playerViewpoint + point(25, 0)
  197.           pickupData[wPickup][6] = pickupData[wPickup][6] - 1
  198.       end case
  199.     end if
  200.   end repeat
  201.   if updateTextFields = 1 then
  202.     if updateCoinDisplay = 1 then
  203.       member("Coin Display").text = string(playerInventory[1])
  204.     end if
  205.     if updateKeyDisplay = 1 then
  206.       member("Key Display").text = string(playerInventory[2])
  207.     end if
  208.   end if
  209. end
  210.